package com.sqsf.javabean;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Repository;
//4个注解功能相同 只是用于标识不同的类
//默认调用无参构造方法创建对象
@Repository("u")//<bean id="u" class="com.sqsf.javabean.User"></bean>
public class User {
    @Value("2")
    private int id;
    @Value("李四")
    private String name;
    @Value("28")
    private int age;
    //对于自定义对象而言 需要现将其交由spring容器管理才能注入
    @Autowired//在spring中查找指定类型的对象存入
    @Qualifier("r")//如果有多个类型相同对象 使用指定的id注入

    //java也提供了另外的注解也可以实现这个功能
    //@Resource//先根据属性名作为id注入 没有再根据类型注入
    private Role r;

    public User() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Role getR() {
        return r;
    }

    public void setR(Role r) {
        this.r = r;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", r=" + r +
                '}';
    }
    public void a() {
        System.out.println("初始化");
    }
    public void b() {
        System.out.println("销毁");
    }
}